#ifndef UNIONROBCONTROLLERHMIDLL_H
#define UNIONROBCONTROLLERHMIDLL_H

#include <QObject>
#include <QWidget>
#include <QByteArray>
#include <QByteArrayData>

#include "robcontrollerhmi_interface.h"

class UnionRobControllerHMIDLL : public RobControllerHMI{
Q_OBJECT
Q_PLUGIN_METADATA(IID "RobControllerHMI_idd" )
Q_INTERFACES(RobControllerHMI)

public:
    UnionRobControllerHMIDLL();
    ~UnionRobControllerHMIDLL();

    QWidget* RegisiterUi();

    void FastTimerLoop();
    void SlowTimerLoop();

    void onbtnclicked_ModeSelected(short Mode);

    bool onbtnclicked_vPower();
    bool onbtnclicked_ESTOP_Clicked();

    void onbtnclicked_Home();

    void onbtnclicked_Setting();
    void onbtnclicked_Edit();
    bool onbtnclicked_Pause();
    bool onbtnclicked_Run();
    bool onbtnclicked_Stop();

    void onbtnclicked_fn1();
    void onbtnclicked_fn2();
    void onbtnclicked_fn3();
    void onbtnclicked_fn4();

    void onbtnpressed_fn1();
    void onbtnpressed_fn2();
    void onbtnpressed_fn3();
    void onbtnpressed_fn4();

    void onbtnreleased_fn1();
    void onbtnreleased_fn2();
    void onbtnreleased_fn3();
    void onbtnreleased_fn4();

    void onbtnclicked_MainScriptStatus();
    void onbtnclicked_SubScriptStatus();
    void onbtnclicked_VisHmi();
    void onbtnclicked_Coordinate(short& Coordinate,int& ToolId, int& WorkID);

    void onbtnpressed_XP();
    void onbtnpressed_YP();
    void onbtnpressed_ZP();
    void onbtnpressed_AP();
    void onbtnpressed_BP();
    void onbtnpressed_CP();
    void onbtnpressed_XN();
    void onbtnpressed_YN();
    void onbtnpressed_ZN();
    void onbtnpressed_AN();
    void onbtnpressed_BN();
    void onbtnpressed_CN();

    void onbtnpressed_E1P();
    void onbtnpressed_E2P();
    void onbtnpressed_E1N();
    void onbtnpressed_E2N();

    void onbtnreleased_XP();
    void onbtnreleased_YP();
    void onbtnreleased_ZP();
    void onbtnreleased_AP();
    void onbtnreleased_BP();
    void onbtnreleased_CP();
    void onbtnreleased_XN();
    void onbtnreleased_YN();
    void onbtnreleased_ZN();
    void onbtnreleased_AN();
    void onbtnreleased_BN();
    void onbtnreleased_CN();

    void onbtnreleased_E1P();
    void onbtnreleased_E2P();
    void onbtnreleased_E1N();
    void onbtnreleased_E2N();

    void onbtnclicked_MannualOverrideP(double& value);
    void onbtnclicked_ProgramOverrideP(double& value);
    void onbtnclicked_MannualOverrideN(double& value);
    void onbtnclicked_ProgramOverrideN(double& value);

    void fromBackendMessageCommand(QByteArray Data);
    void toBackendMessage(QByteArray& Data);
};

#endif // UNIONROBCONTROLLERHMIDLL_H
